#ifndef __INF_FPM383_H__
#define __INF_FPM383_H__

#include "Com_Debug.h"
#include "driver/gpio.h"
#include "Com_Config.h"


// 定义引脚
// 发送
#define TOUCH_TX GPIO_NUM_21
// 读取
#define TOUCH_RX GPIO_NUM_20
// 中断
#define TOUCH_INT GPIO_NUM_10

// 外部引用 是否触发中断 1 == 触发中断 0 == 未触发中断
extern volatile uint8_t is_has_finger;

/**
 * @brief 初始化
 * 
 */
void Inf_FPM383_Init(void);

/**
 * @brie 进入睡眠模式
 * 
 */
void Inf_FPM383_Sleep(void);

/**
 * @brief 查询ID
 * 
 * @param id 
 * @return Com_Status 
 */
uint16_t Inf_FPM383_FindId(void);

// 查询当前指纹ID
int16_t Inf_FPM383_Current_Id(void);


/**
 * @brief 一站式录入指纹
 * 
 * @param id 
 * @return Com_Status 
 */
Com_Status Inf_FPM383_RegFinger(uint16_t id);

/**
 * @brief 发送数据
 * 
 * @param data 数据指针
 * @param len 数据长度
 * @return Com_Status 
 */
Com_Status Inf_FPM383_SendData(uint8_t *data, uint16_t len);

/**
 * @brief 接收数据
 *
 * @param data 数据指针
 * @param len 数据长度
 * @param timeout 超时时间
 * @return Com_Status
 */
Com_Status Inf_FPM383_RecvData( uint32_t len, uint16_t timeout);

/**
 * @brief 删除当前指纹
 * 
 * @param id 指纹id
 * @return Com_Status 
 */
Com_Status Inf_FPM383_DelFinger(int16_t id);
 
/**
 * @brief 验证指纹
 * 
 * @return Com_Status 
 */
Com_Status Inf_FPM383_CheckFinger(void);

/**
 * @brief 读取设备信息
 * 
 */
void Inf_FPM383_ReadId(void);

/**
 * @brief 取消操作
 * 
 */
void Inf_FPM383_CancelOp(void);

/**
 * @brief  设置校验位
 * 
 * @param data 数据指针
 * @param len 数据长度
 */
void Inf_FPM383_SetCheckSum(uint8_t *data, uint16_t len);
#endif /* __INF_FPM383_H__ */ 
